אלגו מתקדם 67824 11 ביוני 2012 מרצה: יאיר בר טל בודק: אורן בקר איני לוקחת אחריות על מה שכתוב כאן, so tread lightly אין המרצה קשור לסיכום זה בשום דרך. הערות יתקבלו בברכה.noga.rotman@gmail.com אהבתם? יש עוד! www.cs.huji.ac.il/ nogar02 1
תוכן עניינים 4............................... הקדמה 0.1 4 ספרים.......................... 0.1.1 5....................... הרכב הציון 0.1.2 6.......................... אלגוריתמי אפרוקסימציה 1 6............................... הגדרות 1.1 6 אלגוריתמי אופטימיזציה................. 1.1.1 7.................... אלגוריתמי קירוב 1.1.2 10.............. תכנות לינארי Linear Programming 1.2 13 מחלקות נוספות..................... 1.2.1 13 על אלגוריתם ה simplex................ 1.2.2 14............ LP בהצגה קנונית / סטנדרטית 1.2.3 14 דואליות של תכנון לינארי. LP Duality....... 1.2.4 21................. Weighted Set Cover 1.2.5 26............................. Max SAT 1.3 27................ אלגוריתם רנדומי ראשון 1.3.1 28.................. אלגוריתם רנודמי שני 1.3.2 30........... שילוב שני האלגוריתמים הקודמים 1.3.3 32 דרנדומיזציה....................... 1.3.4 33............................ בעיות נוספות 1.4 33.............. הקדמה קצת על הסתברות 1.4.1 36...... Min Capacity Multi Commodity Flow 1.4.2 38....................... Knapsack 1.4.3 39.................... Primal-Dual Algorithms 1.5 40.................... Min Multi Cut 1.5.1 43................. Minimum Knapsack 1.5.2 47............... Semi Definite P rogramming 1.6 48........................ Max Cut 1.6.1 53 אלגוריתמים מקוונים. Online Algorithms............... 2 53............................... הגדרות 2.1 54............... דוגמאות לאלגוריתמים דטרמיניסטיים 2.2 54........ בעיית איזון עומסים Load Balancing 2.2.1 56 הרחבה לבעית איזון העומסים מכונות תלויות..... 2.2.2 57.................. בעיית הפרה האבודה 2.2.3 58....................... בעית הסקי 2.2.4 59 אלגוריתמים רנדומיים........................ 2.3 59.......... דוגמא שיפור לניתוח לבעית הסקי 2.3.1 60 בעיית דפדוף. paging...................... 2.4 61 אלגוריתמים מכוונים לבעיה............... 2.4.1 63 אלגוריתמים רנדומיים. Random Marking..... 2.4.2 66......................... בעיית k השרתים 2.5 66 בעיות שקולות...................... 2.5.1 67...................... ניתוח הבעיה 2.5.2 2
רשימת אלגוריתמים 8.............................. אלגוריתם ל VC 1 11............................. אלגוריתם ל WVC 2 20........................... WVC - Primal-Dual 3 22........................ האלגוריתם החמדן ל WSC 4 25 עיגול רנדומלי. Randomized Rounding................ 5 27......................... MAX SAT I (Johnson) 6 28.................. MAX SAT II - Goeman-Williamson 7 30............................... MAX SAT III 8 36 עיגול רנדומי ל Flow. Min Capacity Multi Commodity....... 9 38....................... אלגוריתם דינמי ל Knapsack 10 39..................... אלגוריתם F P T AS ל Knapsack 11 42............ Primal Dual for the Min Multi Cut problem 12 46 אלגוריתם Primal-Dual לבעיית ה Knapsack. Min........... 13 51 אלגוריתם עיגול ל V P לבעיית ה. MAX CUT............ 14 57...................... אלגוריתם לבעית הפרה האבודה 15 59.................... אלגוריתם ON רנדומי לבעית הסקי 16 האלגוריתם האופטימלי לבעית of f line 60 LF D - Longest Forward Distance 17 63............................ Random Marking 18 69............................ Double Coverage 19 3
0.1 הקדמה המחקר במדעי המחשב עוסק בשני נושאים עיקריים: סיבוכיות אלגוריתמים 5/3/2012 אנו נעסוק באלגוריתמים מתקדמים. הנושאים שנעסוק בהם הם: אלגוריתמי אפרוקסימציה Algorithms).(Approximation אלגוריתמים מקוונים Algorithms) (Online בעיות בהן המידע לא נתון מראש, אלא בשלבים (לא קשור לאינטרנט). נושאים נוספים: שיטות מטריות. הסיבה לכך היא שכמות גדולה מהבעיות הבסיסיות בעולם הם NP complete בעיות כמו תזמון, מציאת מסלול וכו'. אי אפשר לפתור אותן בזמן פולינומיאלי. צריך להתמודד איתן בצורה אחרת. ישנן כמה דרכים לנסות להתמודד איתן. הגישה הכללית בתיאוריה של מדעי המחשב היא לנסות להגיד דברים יותר ריגורוזיים על מה שאנחנו עושים. כאן יש פער בין המעשיות לבין תיאוריה: 1. יוריסטיקות שיטות מעשיות. כלומר, לא מנסים לנתח לעומק (רק ניתוח בסיסי) אבל אי אפשר לקבל הבטחה לגבי האלגוריתמים המתקבלים (לא מסמנים בזמן סביר במקרים מסויימים, לא תמיד מסיימים), אבל ברב המקרים מסתיימים בצורה טובה. 2. ניתוח המקרה הממוצע (לאו דווקא באופן המוחלט)\מודלים הסתברותיים על הקלט. כאן יש חיסרון במידה והמציאות היא לא כמו המודל, הניתוח אינו רלוונטי. בגישה זו פחות ניגע בקורס הזה. 3. ניתוח המקרה הגרוע ברגע שיש הבטחה מהסוג הזה אז ההבטחה נכונה לכל קלט שנקבל. עם זאת, המציאות יכולה להיות הרבה יותר טובה מהמקרה הזה, ולכן בשאר המקרים אולי אנחנו נוקטים בדרך לא נכונה. עם זאת, בגישה הזו אפשר להגיד דברים מאוד מעניינים. בגישה השניה נכנס הנושא של אלגוריתמי אפרוקסימציה ננסה למצוא קירוב עד כדי קבוע מסויים. זוהי בעיית offline כל הקלט נתון מראש (למשל, תזמון של עבודות במעבד). אלגוריתמים מקוונים לעומת זאת דנים בבעיות בהן הקלט לא ניתן כולו בבת אחת, אלא תוך כדי עבודה. עוד דרך להתמודד עם בעיות שכאלו.Competitive Analysis 0.1.1 ספרים.Approximation Algorithms - Vijay Vazirani.The Design of Approximation Algorithms - D. Williamson, D. Shmous 4
0.1.2 הרכב הציון סיכומי שיעור יהיו חלק מהציון (לא ברור מה חלקו בשלב זה). רב הציון יהיה מבוסס על הגשת תרגילים, בערך תרגיל כל שבועיים. לא יהיה מבחן בית. יהיה ראיון בסוף הקורס על התרגילים 25% 20%. 5
1 אלגוריתמי אפרוקסימציה 1.1 הגדרות נזכר במושגים הבסיסיים: הגדרה 1.1 מחלקה P היא מחלקת הבעיות שניתן לפתור בזמן פולינומי. הגדרה 1.2 מחלקת NP היא מחלק הבעיות שניתן לפתור בזמן פולינומי עם עד, או שניתן לבדוק אותן בזמן פולינומי (ההגדרות שקולות). הגדרה NP hard 1.3 בעיה שאפשר לעשות עליה רדוקציה פולינומיאלית מכל בעיה אחרת ב.NP הגדרה NP conplete 1.4 אם הבעיה היא NP hard וגם ב.NP 1.1.1 אלגוריתמי אופטימיזציה סוג הבעיות שאנו מתעסקים בהן הוא בעיות אופטימיזציה (בהן הקלט נתון מראש): נתון קלט I. לכל פתרון אפשרי מוגדרת: בבעיות מינימיזציה עלות (מחיר). בבעיות מקסימיזציה תועלת (רווח). בהנתן אלגוריתם A, נסמן ב ( I ) A את המחיר/רווח שלו. האלגוריתמים האופטימלי OP T עם מחיר/רווח מסומן ב ( I ) :OP T במינימיזציה יש לו מחיר מינימלי. במקסימיזציה יש לו רווח מקסימלי. דוגמאות בסיסיות לבעיות מינימיזציה: בעיית תזמון Scheduling (בדר"כ חושבים עליה כבעיית מינימיזציה). SP T נתון גרף, ונרצה למצוא מסלול שעובר דרך כל הנקודות בעל עלות מינימלי, שחוזר למקום שבו התחלנו בו (מעגל). דוגמאות לבעיות מקסימיזציה:.Max SAT.Max Cut Click Max מציאת הקליק הגדול ביותר בגרף. מהי המשמעות לכך שבעיית אופטימיזציה היא N קשה P (שכן בהגדרה ההתייחסות היא לבעיות הכרעה)? הופכים את בעית האופטימיזציה לבעיית הכרעה: בהנתן k, האם ערך הפתרון האופטימלי k למינימיזציה, או k למקסימיזציה. מאחר והבעיות הללו הן קשות, אז גם בעיות האופטימיזציה הן קשות. 6
1.1.2 אלגוריתמי קירוב הגדרה 1.5 אם מדובר בבעיית מינימיזציה, אומרים שלאלגוריתם A יש יחס קירוב α (עבור > 1 α) אם A רץ בזמן פולינומיאלי, ולכל קלט I מתקיים: A (I) α OP T (I) עבור בעיית מקסימיזציה, אומרים שלאלגוריתם A יש יחס קירוב α (עבור < 1 α) אם A רץ בזמן פולינומיאלי, ולכל קלט I מתקיים: A (I) α OP T (I) הגדרה 1.6 יחס הקירוב של אלגוריתם A: בבעיית מינימיזציה ה α המינימלי שעבורו לאלגוריתם A יש יחס קירוב α. הגדרה 1.7 יחס הקירוב של הבעיה עצמה: יחס הקירוב הטוב ביותר (מינימיזציה מינימלי, מקסימיזציה מקסימלי) שאלגוריתם (פולינומיאלי) כלשהוא יכול להשיג. נשים לב כי α יכול להיות פונקציה של גודל הקלט. נתחיל עם דוגמא שאנחנו כבר למעשה מכירים: בעיית Vertex Cover נתון גרף E).G := (V, אומרים שקבוצה C V היא כיסוי של,G אם e E קיים קודקוד בכיסוי v C כך ש e v. רוצים למצוא כיסוי C כך ש C מינימלי. Weighted VC נתונה בנוסף פונקציית משקל + R.w : V v C מינימלי. רוצים למצוא כיסוי C כך ש ( v ) w זוהי בעיה NP קשה. כיצד אפשר לעשות את הניתוח כאשר לא נוכל להציג את הפתרון האופטימלי? כאשר מדובר בבעיית מינימיזציה, מציגים חסם תחתון למחיר האופטימלי (בבעיית מקסימיזציה חסם עליון לרווח האופטימלי). בהנתן קלט I, נסמן חסם תחתון זה ב ( I ) LB (או (I) UB לבעיית מקסימיזציה). במקום לחסום את היחס בין המחיר של האלגוריתם לאופטימלי, נחסום את היחס בין המחיר של האלגוריתם לחסם התחתון: I OP T (I) LB (I) A (I) OP T (I) A (I) LB (I) α 7
הגדרה 1.8 זיווג בגרף (E G =:,V) הוא תת קבוצה M E שזרות זו לזו, כלומר שאין ב M זוג קשתות בעלות קודקוד משותף. הגדרה 1.9 זיווג מקסימלי matching) (maximal 1 הוא זיווג M E שלא ניתן להוסיף לו קשת נוספת. אלגוריתם 1 אלגוריתם ל VC מצא זיווג מקסימלי M, והכנס לכיסוי C את כל קודקודי הקשתות ב M. משפט 1.10 לאלגוריתם יש יחס קירוב 2. הוכחה: נגדיר לכל קלט I (I) M (אפשר לעשות בצורה גרידית, אבל גם את זה אפשר בצורות שונות). I OP T (I) M (I) = LB (I) טענה 1.11 הוכחה: נתבונן בזיווג המקסימלי. בכיסוי (כי הקשתות זרות). נוכיח את המשפט: לכל קשת ב ( I ) M חייב להיות לפחות קודקוד אחד נוכיח כי קיבלנו כיסוי חוקי: נניח בשלילה שהכיסוי לא חוקי. אזי קיימת קשת כך שאף אחד מקודקודיה אינו בכיסוי C (ולכן לא ב M ). אזי ניתן להוסיף אותה ל M, בסתירה למקסימליות M. ננתח את העלות: A (I) = 2 M (I) 2 OP T (I) לכל בעיית אפרוקסימציה יש תמיד שאלות טבעיות שעולות: 1. האם יחס הקירוב שהוכחנו הוא הטוב ביותר עבור האלגוריתם? במקרה שלנו נראה שכן, כלומר שלא ניתן לשפר את יחס הקירוב. 2. "פער השלמות" : 2 האם יש אלגוריתם אחר B שיכול להשיג יחס קירוב טוב יותר ביחס לאותו חסם תחתון? במקרה שלנו נראה שאין אלגוריתם יותר טוב לחסם התחתון הזה. 1 בניגוד ל matching,maximum בו מספר הצלעות בזיווג הוא מקסימלי. אלו הגדרות שלא חופפות למשל ניתן להסתכל בגרף בצורת האות Z. קל הרבה יותר למצוא maximal (בצורה גרידית מוסיפים קשתות כל עוד אפשר), והוא מספיק להמשך הדיון לכן אנו דנים בו. 2 נגיע למושג הזה בהמשך, כרגע לא נדון בו. 8
3. האם יחס הקירוב לבעיה הוא מה שהוכחנו (במקרה שלנו 2)? האם ניתן לשפר את החסם התחתון? נדון בשאלות, כאשר נתייחס לחסם התחתון שמצאנו 2: על השאלה הראשונה נוכל להגיד שהתשובה היא כן, במידה ונוכל למצוא קלט I עבורו (I) A. (I) 2 OP T כמובן שלא תמיד ניתן למצוא כזה, וניתן לנסח את השאלה בצורה הבאה: האם לכל > 0 ε קיים קלט I כך ש (I)?A (I) > (2 ε) OP T לגבי השאלה השניה: מספיק שנראה כי קיים I כך ש: OP T (I) LB (I) 2. B(I) LB(I) OP T (I) LB(I) וזאת כי לכל B, למעשה, נספיק שנראה כי לכל > 0 ε קיים קלט I כך ש: נענה על השאלות: OP T (I) LB (I) 2 ε 1. יחס הקירוב שהוכחנו הוא אכן הטוב ביותר עבור האלגוריתם לדוגמא, בהנתן קלט בגודל n בו כל הצלעות זרות: OP T (I) = n, A (I) = 2n A (I) OP T (I) = 2 כלומר מצאנו קלט עבורו יחס הקירוב שהוכחנו מתקיים, כנדרש. מספיק במקרה זה לקחת קשת יחידה (אנו דנים במקרה כללי כי אפשר לטעון כי אולי במקרים של גרפים מאוד גדולים קיים יחס קירוב טוב יותר). OP T (I) LB (I).2 (I).LB (I) = M נרצה להראות כי: 2 בהנתן קליק בגודל n (אי זוגי), 1 n OP T (I) = (אם ניקח פחות, ישנם שני קודקודים שיש ביניהם צלע (כי זה קליק) והיא לא מכוסה). כמו כן: LB (I) = n 1 2 OP T (I) LB (I) = 2 כאן מספיק לקחת משולש..Karalocostas, 2 באלגוריתם של '04 1 logn 3. אפשר לשפר "בטיפה" ידוע יחס קירוב של איך אפשר להגיד שלא ניתן לשפר את החסם התחתון? זה לא נושא קל. יש תיאוריה 9
שלמה העוסקת בנושא זה "קושי של קירוב". זה לא הנושא של קורס זה. חוקרים הראו (פריצת דרך בתיאוריה של מדעי המחשב לפני עשרים שנה) שיש מחלקות של בעיות שלא ניתן לקרב. לעיתים כדי להראות קושי של קירוב מספיק להראות רדוקציה, אבל גם זה לא נושא קל. על הבעיה שלנו, בהנחה ש P, NP לא ניתן לקרב את הבעיה ביחס קטן מ... 1.36 תוצאה של 05' Safra.Dinur, 1.2 תכנות לינארי Linear Programming מסתבר שישנן הרבה בעיות אופטימיזציה שאפשר לבטא אותן בעזרת פונקציית מטרה לינארית. למשל, נעסוק בבעיה הממושקלת של V. C ניתן להציג אותה באופן הבא: לכל קודקוד v V בגרף ניחס מספר/אינדיקטור 1} {0, v.v C χ v = 1 :χ נגדיר את פונקציית המטרה להיות: ( ) min w (v) χ v v V נרצה שלכל צלע (v,u) לפחות עבור אחד מהם האינדיקטור יהיה אחד. אפשר לבטא אילוץ זה בצורה לינארית: כמו כן, ישנו אילוץ נוסף: (u, v) E : χ v + χ u 1 v V : χ v {0, 1} מערכת זו נקראת.ILP אם נוריד את האילוץ השני, נקבל בעיה שאפשר לפתור בזמן פולינומי: נבנה תוכנית לינארית,LP והתוצאות שנקבל בתוכנית הקודמת יתקבלו גם פה: ( ) min w (v) χ v v V (u, v) E : χ v + χ u 1 v V : χ v 0 v V : χ v 1 כשנפתור את התוכנית החדשה, נקבל תוצאות שהן שבריות. זה לא עונה לנו על השאלה של הכיסוי אלא נותן לנו מעין "כיסוי שברי". הרעיון נשתמש ב"כיסוי השברי" אותו אנו יודעים למצוא, על מנת לפתור את הבעיה הממושקלת. מדוע קל יותר לפתור את הבעיה השניה? בעוד שהמרחב המקורי הוא מרחב בדיד, התוכנית השניה נותנת מרחב קמור, ובמרחב שכזה ניתן לעשות אופטימיזציה בצורה קלה יותר. כיצד נשתמש בפתרון הבעיה השניה? 10
I :ILP (I) = OP T (I) OP T (I) = ILP (I) LP (I) := LB (I) מדוע קיבלנו ש ( I ) LP הוא חסם תחתון? מהכלה! המקרים בהם χ v הוא אפס או אחד מוכלים בבעיה השניה, ולכן כל פיתרון של ILP הוא פתרון של,LP ולכן (I) LP הוא חסם תחתון של (I).ILP נאמר כמה מילים על ההגדרה הכללית של תוכנית לינארית :LP יהיו משתנים,x 1,..., x n R מקדמים,c 1,..., c n R ופונקציית המטרה היא: min/max c i x i 1 i n וכמו כן יהיו מקדמים,A = (a ij ),a ij R, 1 i n, 1 j m,b 1,..., b m R ואילוצים: 1 j m i a ij x j \ \ = b j i אזי את התוכנית הלינארית הנ"ל ניתן לפתור בזמן פולינומיאלי. למשל, בעזרת אלגוריתם simplex (אין עליו ניתוח רוגרוזי אבל בפועל הוא עובד טוב). יש אלגוריתמים נוספים שאפשר עליהם להוכיח שהם אכן פועלים בזמן פולינומיאלי, למשל אלגוריתם אליפסואיד. במקרה שלנו, התוכנית הלינארית היא: ( ) min w (v) x v v V (u, v) E : x v + x u 1 v V : x v 0 v V : x v 1 מכיוון ועושים מינימיזציה, אין למעשה צורך באילוץ האחרון אם יש פתרון שבו > 1 v χ, אז קיים פתרון בו 1 v χ והוא לא פחות טוב ממנו (מבחינת המשקלות). 12/03/2012 כיצד משתמשים בזה כדי להראות את האפרוקסימציה? ראינו כי הפתרון האופטימלי ל LP (הפתרון האופטימלי השברי) מהווה חסם תחתון (לבעיית מינימיזציה) למחיר הפתרון האופטימלי (של ה.(ILP אלגוריתם 2 אלגוריתם ל WVC נחשב את הפתרון האופטימלי ל.LP ˆx i אחרת = 0,ˆx i קבע = 1,x i 1 2 לכל i, אם משפט 1.12 לאלגוריתם יש יחס קירוב 2. 11
הוכחה: תחילה, נראה שקיבלנו כיסוי: נסתכל על קשת,x i + x j 1,{i, j} E לכן 1 2 i x או 1 2 j.x לכן = 1 i ˆx או.ˆx i + ˆx j זהו כיסוי), ולכן 1 (כלומר ˆx j = 1 כעת, נראה כי זהו קירוב 2: ALG (I) = w (C) = w iˆx i = w i 2 w i x i = 2 OP T F (I) 2 OP T (I) i V i:x i V i:x i 1 2 נחזור ונשאל את שלוש השאלות ששאלנו בשיעור הקודם: 1. נמצא חסם תחתון לאלגוריתם שמצאנו נביט למשל בגרף בו יש k קשתות, כאשר אף קשת אינו מחוברת לאחרת, והמשקלות אחידים. אזי: OP T (I) = k אם הפתרון השברי כזה שכל ה 2 = 1 i x, אזי.ALG (I) = 2k זה מספיק בשביל להגיד שלאלגוריתם יש חסם תחתון (אפשר למצוא דוגמא יותר חזקה, אבל נפסח על זה). 2. נראה שלא קיים אלגוריתם אחר B שאפשר לקבל ממנו יחס קירוב יותר טוב על החסם התחתון שמצאנו נראה שאפשר למצוא חסם תחתון על פער השלמות (פער השלמות מראה שאין אלגוריתם קירוב עם יחס פחות מ α לעומת ה :(OP T F ( ) B (I) OP T (I) OP T F (I) OP T F (I) 2 2 n נראה זאת ע"י דוגמא נגדית: ניקח את I להיות קליקה בגודל n. פתרון לבעיה זו. לפתרון זה העלות היא n 2.i לכל x i = 1 2 (לאו דוקא האופטימלי) הוא הפתרון בו, n 2 ולכן נקבל: לכן עלות הפתרון האופטימלי הוא לא יותר מ OP T F (I) n 2 OP T (I) = n 1 OP T (I) OP T F (I) n 1 = 2 n n/2 2 3. האם יש חסם תחתון טוב יותר לבעיה עצמה? דיברנו על זה כבר בשבוע שעבר (משתמשים בהנחה.(P NP מאוחר יותר נראה עוד דוגמא ל VC, וגם לו יחס קירוב 2. החסרון היחיד במקרה שלנו הוא שצריך לפתור את ה.LP בדוגמא בהמשך לא נצטרך לפתור את ה,LP אך יהיה בו שימוש בניתוח (זהו ניתוח פשוט יותר, קיים גם ניתוח אחר שלא משתמש כלל ב.(LP 12
1.2.1 מחלקות נוספות הגדרה 1.13 בעיה L AP X אם קיים קבוע α כך ש L ניתנת לקירוב ביחס α (קיים אלגוריתם פולינומי עם יחס קירוב α). למשל,,V C, W V C, T SP AP X תזמון משימות. הגדרה 1.14 בעיה (Poly-time approximation scheme) L P T AS אם לכל > 0 ε קיים אלגוריתם פולינומי עם יחס קירוב + ε 1 ל L. הגדרה 1.15 בעיה (Fully poly-time approximation scheme) L F P T AS אם L P, T AS כלומר אם לכל > 0 ε קיים אלגוריתם עם יחס קירוב + ε 1, וגם זמן ריצה פולינומי. 1 ε בגודל הקלט, וב למשל, אלגוריתם שרץ ב n 1 ε טוב ל AS P T (כי לכל ε קבוע הוא פולינומיאלי) אבל לא טוב. ( n ε ) 2 ל AS F. P T דוגמא לזמן ריצה שטוב ל AS F P T מתקיים: P F P T AS P T AS AP X NP אם,P NP אזי,P T AS AP X כי V C AP X אב תחת ההנחה.V C / P T AS 1.2.2 על אלגוריתם ה simplex ראינו את המבנה של :LP min/max i c i x i j i a ij x i / / = b j דרך אחרת לכתוב את זה היא בעזרת וקטורים: x = (x 1, x 2,..., x n ) T, c = (c 1,..., c n ) T, b = (b 1,..., b m ) T a 11 a 12 A =..., c i x i = c T x ann נראה דוגמא פשוטה של LP בשני מימדים (שני משתנים): נביט באילוצים הבאים: min x 1 2x 2 x 1 + x 2 1 x 1 0 x 2 0 אם נסתכל על מערכת צירים (ציר ה x מציין את x, 1 ציר y מציין את x), 2 אפשר לצייר את הטווח שלנו אנו מסתכלים על הרביע הראשון, וישנו קו ישר העובר בנקודות (0,1), (1,0) 13
שבינו לבין ראשית הצירים נמצאים המשתנים שלנו. ניקח את פונקציית המטרה ונבחר c כך שc x, 1 2x 2 = אז נקבל קו. כאשר "נשחק" עם ה c נקבל קווים שונים מקבילים זה לזה. השאלה הנשאלת היא, מהו ה c הכי קטן בו הפונקציה עדיין בתחום של המשולש. אפשר להוכיח עבור המקרה שלנו כי המינימום והמקסימום יתקבלו בקודקודי המשולש (בשניים שאינם ראשית הצירים), או במקרה מסויים בצלע של המשולש (אם הקו מקביל בדיוק לצלע עבור פונקציית מטרה אחרת ואז ממילא מתקבל בזווית). במקרה שלנו 2 = c הוא המינימלי (אפשר לבדוק את שני הקודקודים ולמצוא מיהו המינימום ומיהו המקסימום). לכן, מספיק לבדוק מה קורה בקודקודים. אלגוריתם ה simplex (פתרון ל (LP עושה בדיוק את זה! אמרנו שאלגוריתם זה הוא לעיתים אקספוננציאלי זה קורה כאשר מספר הקודקודים הוא אקספוננציאלי. עדיין אלגוריתם זה עובד בזמן טוב, וזאת כי הוא עובד בצורה לוקלית (אינטואיטיבית הוא עובר מקודקוד לקודקוד שכן), ובפועל זה עובד טוב (אין לכך הוכחה ריגורוזית). LP 1.2.3 בהצגה קנונית / סטנדרטית הצורה הקנונית (מקרה פרטי של LP כללי): min c T x, Ax b הצורה הסטנדרטית הופכים את אי השיוויונים לשיוויונים: min c T x Ax = b x 0 כל תוכנית LP כללית אפשר להפוך לצורה הסטנדרטית לא נדון בזה. כמו כן, כל תוכנית LP אפשר להפוך לצורה הקנונית בטענה זו נדון. צורה כללית צורה קנונית.1 אם הבעיה היא בעיית מקסימום, כלומר.min c T x max c T x.2 אם יש שיוויון i a ijx i = b j מפרקים לשני אי שיוויונות i i a ijx i b j, i a ijx.b j.3 אם יש אי שיוויון i ( a ij) x i b j i a ijx i b j 1.2.4 דואליות של תכנון לינארי LP Duality נביט בתוכנית בצורה סטנדרטית (primal) P: P = min x 1 + 2x 2 + 4x 3 x 1 + x 2 + 2x 3 = 5 2x 1 + x 2 + 3x 3 = 8 x 1 0, x 2 0, x 3 0 14
נרצה להעריך את הפתרון האופטימלי, כלומר נרצה להגיד ביטויים מהצורה P.something אזי, נרצה למצוא צ"ל של שני האילוצים שיתן לנו את פונקציית המטרה. אם נמצא y 1, y 2 כך ש: P = x 1 + 2x 2 + 4x 3 y 1 (x 1 + x 2 + 2x 3 ) + y 2 (2x 1 + x 2 + 3x 3 ) = 5y 1 + 8y 2 נקבל כי הביטוי גדול מ בדוגמא זו אפשר למצוא כאלו = 0 2 y, 1 =,1 y ואז נקבל כי הפתרון האופטימלי לא יכול להיות קטן יותר מ 5. עוד דוגמא 1 = 2 y, 1 =,3 y ואז נקבל כי הפתרון האופטימלי לא יכול להיות קטן מ 7, כלומר הוא לפחות 7. נטען שזה הכי טוב שאפשר, כלומר קיים פתרון שנותן 7. נראה שקיים כזה: x = 3 2 0 אם נציב נקבל כי פתרון זה אכן נותן 7, כנדרש. כך אפשר למצוא מהו הפתרון האופטימלי ללא פתרון ממש של הבעיה. הדואליות נובעת מנסיון לעשות פורמליזציה לתהליך מעלה: x 1 + 2x 2 + 4x 3 = P 5y 1 + 8y 2 = (x 1 + x 2 + 2x 3 ) y 1 + (2x 1 + x 2 + 3x 3 ) y 2 (y 1 + 2y 2 ) x 1 + (y 1 + y 2 ) x 2 + (2y 1 + 3y 2 ) x 3 בהנחה ש 0 i x, נקבל כי כל פתרון המקיים את התנאים: y 1 + 2y 2 1 y 1 + y 2 2 2y 1 + 3y 2 4 יקיים את המטרה, ונרצה למצוא את החסם התחתון הכי גדול מבין הפתרונות הללו, כלומר מצאנו כי אנו רוצים למצוא את הפתרון לתוכנית לינארית חדשה: q = max 5y 1 + 8y 2 y 1 + 2y 2 1 y 1 + y 2 2 2y 1 + 3y 2 4 זוהי נקראת תוכנית לינארית דואלית נסמנה ב ( dual ) D. דהיינו, כל פיתרון אפשרי ל D נותן ערך P לפתרון אפשרי ל P. בדוגמא הספציפית שלנו, ראינו כי 7 P, וכן ראינו הצבה עבורה 7 q, ולכן: 7 P q 7 15
למה זה נכון תמיד? לא נוכיח זאת. OP T DLP (I) = OP T LP (I) OP T (I) q P OP T (I) ALG (I) α q לכל פתרון אפשרי q של D: נצטרך להגדיר קצת יותר טוב איך נראית הדואליות. לתוכנית בצורה סטנדרטית: min c T x Ax = b x 0 max b T y A T y c התוכנית הדואלית תהיה: משפט הדואליות החלשה משפט 1.16 אם x הוא פתרון ל P, ו y הוא פתרון ל D, אז: c T x b T y כלומר, ערך כל פתרון פרימלי הוא לפחות ערך הפתרון הדואלי. הוכחה: c T x ( A T y ) T x = y T Ax = y T b = b T y בדרך כלל משפט זה יספיק לנו. עם זאת, נראה גם את המשפט החזק: משפט הדואליות החזקה משפט 1.17 אם x פתרון אופטימלי ל P (כלומר קיים פתרון אופטימלי ל P), אז קיים פתרון אופטימלי y ל D, ומתקיים: c T x = b T y 16
ההוכחה של משפט זה לא פשוטה. כמו כן משפט זה גם פועל הפוך. תרגיל קל התוכנית הדואלית של D היא P. ישנה צורה קנונית מיוחדת נוספת: min c T x Ax b x 0 1 i n a ij x i b j כאשר הפתרון הוא מהצורה: אם היינו מתחילים מצורה זו בדוגמא יכולנו לעשות את אותו הדבר. במקרה זה היינו מקבלים כי התוכנית הדואלית היא: max b T y A T y c y 0 כאשר הפתרון הוא מהצורה: 1 j m a ij y j c i יכול להיות שבמעבר לתוכנית הדואלית נקבל פחות משתנים מהתוכנית המקורית. עם זאת, הסיבה העיקרית במעבר לתוכנית הדואלית היא שפעולה זו נותנת לנו מבנה לבעיה. 19/03/2012 הגדרה P 1.18 אפשרית אם קיים לה פתרון כלשהוא (לאו דווקא אופטימלי). הגדרה P 1.19 לא חסומה אם לכל > 0 t קיים פתרון אפשרי x כך ש t c, t x כלומר אם הפתרון. הגדרה D 1.20 לא חסומה אם לכל > 0 t קיים פתרון אפשרי y כך ש t b. T y מסקנה 1.21 (ממשפטי הדואליות) ייתכן בדיוק אחד מ 4 מצבים אפשריים: 1. P אפשרית ולא חסומה D לא אפשרית. 2. D אפשרית ולא חסומה P לא אפשרית. 3. אם P אפשרית וחסומה אז D אפשרית וחסומה, ולהפך..4 P D, לא אפשריות. 17
כפי שאמרנו, הדרך להשתמש בניתוח זה לצורך אפרוקסימציה היא בעצם קבלת חסם תחתון נוסף למחיר אופטימלי. ILP = OP T (I) (LP =) OP T F (I) = c T x c T x b T y משפט הדואליות החלשה נותן לנו כי: כלומר, במקום לפתור את התוכנית הלינארית ולעשות עיגול, אפשר ליצור את התוכנית הדואלית ובעזרתה ליצור חסמים תחתונים למחיר האופטימלי ע"י בחירת פתרון כלשהוא של התוכנית הדואלית כל אחד מהם יהווה חסם כנדרש (כמובן שצריך למצוא אחד כזה "בצורה חכמה" אם נמצא פתרון שהוא קטן מידי, זה לא חסם הדוק, ולכן זה לא ממש יעזור לנו). נרצה להוכיח שהמחיר של האלגוריתם שפותר את הבעיה הראשית מקיים: ALG (I) α b T y ( α c T x = α b T y α OP T (I) ) מסתבר שבמקרים מסויימים זה אכן יותר פשוט (החלק בסוגריים כבר ידוע לנו ממשפטי הדואליות). כדי להשתמש באסטרטגיה זו בבעיית ה C V, יש צורך בכלי נוסף. המשפט הבא נותן איפיון נוסף יותר שימושי ליחס בין הפתרונות האופטימליים. עקרון העודף המשלים Complementary Slackness Principle משפט 1.22 יהיו,x y פתרונות אפשריים ל D,P בהתאמה (בהצגה הקנונית המיוחדת זו שראינו בסוף השיעור הקודם).,x y הם פתרונות אופטימליים אמ"מ מתקיימים שני התנאים הבאים:.1 לכל i n,1 או = 0 i x או 1 j m a ijy j = c i..2 לכל j m,1 או = 0 j y או 1 i n a ijx i = b j. c T x = 1 i n c i x i = i j הוכחה: נניח ששני התנאים מתקיימים. a ij y j x i = ( ) a ij x i y j = b j y i = b T y j i j קיבלנו שיוויון נזכור כי השיוויון אומר כי הפתרונות אופטימליים (כי ממשפט הדואליות החלש.c T x b T y המעברים נובעים ישירות מהתנאים במקרים בהם = 0 i x או = 0 j y מתאפסים בשני המקומות). נניח כי,x y הם פתרונות אופטימליים. 1. דומה לקודם, רק כאן נצטרך להפעיל יותר את הראש: 0 = c T x b T y c T x (Ax) T y = x T c x T A T y = x T ( c A T y ) AT y c, x i 0 0 18
לכן חייב להיות שיוויון לאורך כל הדרך, כלומר = 0 ) y,x ( T c A T ואת הביטוי הזה אפשר לכתוב בתור: x i c i a ij y j = 0 i j x i לכן כדי שכל הביטוי יהיה שווה לאפס, או = 0. j a ijy j אי שליליים, וכן גם x i כלומר,c i = j a ijy j כנדרש. (c i ) או = 0 j j a ijy 2. אותו דבר בצורה אנלוגית: 0 = c T x b T y ( A T y ) x b T y = y T Ax y T b = y T (Ax b) 0 וקיבלנו = 0 b),y T (Ax או בכתיב מלא: ( ) y j a ij x i b j = 0 j i שוב הגורמים אי שליליים, ולכן או = 0 j,y או = 0 j i a ijx i b, כלומר = i i a ijx.b j יש שימוש בתוכניות לינאריות גם לפתרון של בעיות לינאריות (לא אפרוקסימציה). למשל בעיות flow אפשר לפתור כך, ועוד תוכניות כאלו. אז העקרון הנ"ל הוא כלי שימושי להוכחה שהפתרון שהתקבל הוא אופטימלי. לנו זה פחות שימושי, כי אנחנו מחפשים אפרוקסימציה, ולא את הפתרון האופטימלי. לכן בפועל נשתמש בהרחבה של הפתרון המשלים, שיתייחס רק לכיוון הקל של העקרון הנ"ל: עקרון העודף המשלים המורחב משפט 1.23 יהיו,x y פתרונות ל D,P בהתאמה (בצורה קנונית מיוחדת) המקיימים את התנאים הבאים:. j a ijy j ci.1 לכל i n,1 או ש 0 = i x או α.2 לכל j m,1 או ש 0 = j y או j a ijx i β b j. c T x αβ b T y ( αβ b T y = αβ OP T F (I) ) כאשר 1 β.α, אזי: נזכור כי ממשפט הדואליות החלשה, c. T x b T y אזי, אם נמצא פתרונות שמקיימים את התנאים בעקרון הנ"ל, נקבל כי למעשה הפתרון של האלגוריתם חסום ע"י הפתרון הדואלי, 19
j מלמטה על ידו, ומלמעלה ע"י הפתרון הדואלי כפול α β כלשהוא. עם זאת, לפני השימוש, עלינו להוכיח את נכונות העקרון: הוכחה: c T x = 1 c i x i α a ij y j x i = α ( ) 2 a ij x i y j αβ b j y j i i j j i אנחנו כאילו מחפשים שני פתרונות גם פתרון דואלי וגם פתרון פרימלי. אם הם יקיימו את התנאים של עקרון העודף המשלים המורחב, נדע שהם קשורים זה לזה באי השיוויון c, T x αβ b T y ולכן אפשר להשתמש בהם כדי לחסום את הפתרון הרצוי. השימוש הזה נקרא,Primal-Dual approach וזו שיטה מאוד ידועה ומקובלת. לא תמיד זה קל, אבל במקרה שלנו זה יהיה קל: נחזור לבעיית ה C W V שלנו: LP (P ) min i V w i x i {i, l} E x i + x l 1 i V x i 0 התוכנית הדואלית D שתתאים לבעיה זו היא (מתקבל משתנה דואלי לכל קשת y): i,l = j max i V {i,l} E y il l:{i,l} E {i, l} E y il 0 y il w i לאלגוריתם ל C W V ישנן שתי הצגות אחת מאוד פשוטה ואינה קשורה ל,LP והשניה יותר מסובכת אבל קשורה ל.LP נראה תחילה את ההצגה השניה: אלגוריתם WVC - Primal-Dual 3 נמצא פתרון שלם x ופתרון דואלי y (לא שלם) (שיקיימו c T x αβ b T y עבור 1 β :(α, נתחיל מפתרונות התחלתיים = 0 i {i, l} E y il = 0, i V x. בחר קשת {l,i} שאינה מכוסה עדיין (כלומר = 0 l x) i = x אם אין כזו, סיימנו. הגדל את y i,l עד שאחד מאי השיוויונים (הדואליים) ב D הופך להדוק (יש שניים כאלו אחד של i ואחד של l, כלומר אי השיוויון עובר לשיוויון נבחר את זה הקרוב ביותר לערך הנדרש). אם אי השיוויון של D המתאים ל i נהיה הדוק, אז נקבע = 1 i x. אם אי השיוויון של D המתאים ל l נהיה הדוק, נקבע = 1 l x. ניתן תיאור אלטרנטיבי לאלגוריתם שאינו קשור ל :LP 20
בחר קשת לא מכוסה {l,i}, בחר קודקוד i (בה"כ) שמשקלו מינימלי. הורד את משקל w i ממשקל קודקוד l, והכנס את i לכיסוי. הכנס את l לכיסוי גם כן אם המשקל שלו הופל ל 0. חזור על התהליך עד שאין קשת שאינה מכוסה. נשים לב שקיבלנו הרחבה מאוד טבעית של האלגוריתם שראינו בשיעור הראשון לבעיה הלא ממושקלת.VC משפט 1.24 לאלגוריתם P-D ל WVC יש יחס קירוב 2. הוכחה: למעשה, צריך להראות כי הפתרון מקיים את עקרון העודף המשלים המורחב. תנאי 1: עבור = 1 α ברור מהגדרת האלגוריתם, שכן ברגע שיש אילוץ ב D שמתקים ל i הדוק, אז קובעים את = 1 i. x תנאי 1 :2 l x i + x j 2 x i, x (אם 0 i,l,y אז במקרה הגרוע גם = 1 i x וגם.β ולכן התנאי מתקיים עבור = 2,(x l = 1 לכן, מעקרון העודף המשלים המורחב: w (C) = i w i x i 2 OP T F (I) 2 OP T (I) כנדרש. Weighted Set Cover 1.2.5 נתון עולם } n U = {e 1,..., e בגודל,n ואוסף של תת קבוצות S כך ש:. S = U S S לכל.S U,S S ונתונה פונקציית משקל: בעל משקל מינימלי w : S R + רוצים למצוא כיסוי C S (קבוצה של קבוצות) כך ש: S = U (S).w (C) = w כלומר: S C S C min w (S) x S (ILP : x S = 1 S C) S S e U x S 1 S S e S s S x S 0 (ILP : x S {{0, 1}) 21
קיבלנו תוכנית בצורה הקנונית המיוחדת. התוכנית הדואלית המתאימה אם כך תהיה: max e U y e s S e S y e w (S) e U y e 0 ננסה למצוא אינטרפטציה טבעית לבעיות מעלה בשביל אינטואיציה: נביט על התוכנית המקורית היא בעיית כיסוי. התוכנית הדואלית עם זאת היא "בעיית אריזה" (knapsack) מנסים "לארוז" משקל מקסימלי תחת אילוצים (וקטור שמגביל אותנו באיזושהיא צורה). באופן כללי, ניקח את המבנה שדיברנו עליו של התוכנית הקנונית המיוחדת אם כל המקדמים הם אי שליליים, אז זוהי בעיית כיסוי. אלגוריתם 4 האלגוריתם החמדן ל WSC נסמן: U A אוסף האיברים שכבר כוסו עד לשלב הנוכחי בריצת האלגוריתם. האיברים שעדיין לא כוסו. S\A מספר.γ (S) =,S\A = φ יהיה יחס תועלת העלות. כאשר γ (S) = w(s) S\A. e S\A price (e) = γ (S) האלגוריתם: s S x s := 0.A φ אם A U אז:.S := arg min S S, x S 1 γ (S) (S) e S/A price (e) = γ (צעד זה לא הכרחי לאלגוריתם, הוא רק לצורך הניתוח)..A := A S.x S := 1.Greedy (I) = e U נשים לב (e) price משפט 1.25 לאלגוריתם ה Greedy יש יחס קירוב של + 1 (n).h n ln 26/03/2012 22
H n = 1 + 1 2 + 1 3 +... + 1 n הטור ההרמוני, וידוע כי + 1 (n).ln (n) < H n < ln הוכחה: רוצים להגדיר פתרון דואלי y. y e := price (e) H n אם נראה שזהו פתרון חוקי, אז הוכחנו את יחס הקירוב הדרוש ממשפט הדואליות החלש, שכן: Greedy (I) = price (e) = H n y e H n OP T F (I) H n OP T (I) e U e U כאשר הביטוי השלישי משמאל הוא הפתרון הדואלי, ולכן הוא תמיד קטן מהערך האופטימלי של התוכנית הראשית. נוכיח אם כך את חוקיות הפתרון: נתבונן בקבוצה כלשהיא S. S נסתכל על האיברים של S, ונסדר אותם לפי סדר הכיסוי שלהם. יהי e i האיבר ה i בסידור זה. נשים לב כי (S) γ משתנה בכל שלב לפי מספר האיברים שכבר כוסו (ישירות מההגדרה). נתייחס מטה לערך של (S) γ בשלב הנוכחי. בשלב זה + 1 i, S\A k בהנתן, S = k ואז 1 i. S A אזי: price (e i ) w (S) k i + 1 def y e = price (e i ) H n e S e S w (S) H n ( 1 k + 1 ) k 1 +... + 1 = H k w (S) w (S) H n ולכן זהו פתרון חוקי, כנדרש. ננתח את הפתרון לפי השאלות הרגילות שלנו: 1. נשאל, האם לאלגוריתם הגרידי יש יחס קירוב הדוק יותר מזה שמצאנו? לא! נראה זאת ע"י דוגמא, כלומר, מחפשים דוגמא בה המחיר האופטימלי הוא נמוך, כלומר יש כיסוי בגודל קטן (מותר להשתמש במשקלות), ולמרות זאת המחיר של האלגוריתם יהיה גדול. הדוגמא די פשוטה : 3 יש n איברים, לכל איבר יש קבוצה, לקבוצה שכוללת את כל 1 (אחרי, לבאה n 1 1 n האיברים יש משקל של + ɛ 1. לקבוצה הראשונה יש משקל של 1, וכו' עד 1. n 2 שכבר בחרנו את האלמנט הראשון), לבאה המחיר של האלגוריתם הגרידי למקרה הזה הוא H n (בוחר את כל הקבוצות הבודדות), והמחיר של האופטימלי הוא + ɛ 1. 2. "פער השלמות" או שזה המקרה הכי טוב אבסולוטית, או שיש דרך אחרת (ניגע בהן בהמשך). נרצה להוכיח: OP T (I) log (n + 1) OP T F (I) 2 3 זוהי דוגמא עם משקלות, אבל אפשר לעשות זאת ללא תרגיל לתלמיד השקדן. 23
מדוע? בהנתן } 2,U = {e 1,..., e נסתכל על האינדקסים i n 1 כמספרים בעלי ונחשוב על האינדקסים הללו כעל וקטורים בשדה Z 2 n, = 2 k ביטים, כלומר 1 k למשל, אפשר להכפיל את המספרים בצורה הבאה : 4 ( ) i j := i l j l mod2 l החיבור mod2 הוא.xor נגדיר את הקבוצות S i בצורה הבאה: S i = {e j i j = 1}, S = {S 1, S 2,..., S n } מה הגודל של S? i בדיוק חצי מהוקטורים הם אלו שנותנים 1, וחצי הם אלו שנותנים 1+n S. i = 2 1 k = כמו כן, לכל איבר, מספר הקבוצות שמכילות אותו 2 0, כלומר 1+n 2 1 k = (שהרי כל איבר בפעולת הכפל מעלה עם מחצית מהאיברים יתן 2 הוא.(1 בהנתן שהמשקלות הן 1 לכל האיברים, הפתרון האופטימלי הוא: i x Si = 2 n + 1 כלומר, זהו מחיר לכל קבוצה שמכילה את האיבר הזה. אז, בסכימה של האיבר על הקבוצות שמכילה אותו, נקבל 1, כלומר הוא מוכל. אזי (זהו פתרון אופטימלי אך לא נראה זאת, ולכן המעבר הראשון הוא לא שיוויון): OP T F (I) n 2 n + 1 < 2 נניח בשלילה שהאלגוריתם האופטימלי בוחר k > p קבוצות לכיסוי. OP T (I) OP T F (I) k log (n + 1) = 2 2 נסמן i 1,,... i p האינדקסים של הקבוצות. נתבונן במטריצה: i 1 i 2 B =. p k. i p לפי ההגדרה, דרגתה p k > (כלומר היא לא מדרגה מלאה). אזי, מרחב האפס (הקרנל) של B לא מכיל רק את,0 כלומר = 0 j, j 0 B ולכן e j לא מכוסה (שכן לא קיים l p 1 כך ש 1 = j i), l בסתירה לבניה שלנו. על כן, החסם שלנו מתקיים, כנדרש. 3. האם אפשר לשפר את האפורוקסימציה (בעזרת אלגוריתם אחר)? במידה ו P NP אז יחס הקירוב לבעיה הוא לפחות (n) ln (תוצאה של.(Feige 4 יש כאן טענה שזוהי מכפלה פנימית, אך הדרישה של אפס אמ"מ זהו וקטור האפס לא מתקיימת. 24
ניתן פתרון נוסף לבעיה: min w (S) x S S S e U X S 1 S:S e S S x S 0 קיים פתרון אופטימלי בו 1 S x.0 אלגוריתם 5 עיגול רנדומלי Randomized Rounding נפתור את תוכנית ה.LP נבחר את S להשתתף בכיסוי בהסתברות x. S כל t איטרציות שכאלו יהיו כיסוי אחד. נבחר r כיסויים כאלו, ונבחר את הטוב מבין החוקיים. הבעיה: זה לא בהכרח כיסוי. זהו אלגוריתם רנדומי הוא לא תמיד יתן לנו תשובה. באלגוריתם שכזה, אם אם הוא נותן תוצאה טובה (התקבל כיסוי והמחיר נמוך) בהסתברות לא קטנה מידי זה טוב פשוט נריץ אותו הרבה פעמים, ואז ניקח את הפתרון הכי טוב מבין החוקיים שהתקבלו. אזי, הדרישות שלנו: כיסוי חוקי. מחיר (I).ALG (I) c log (n) OP T תחילה, ננתח את ההסתברות בה יתקבל כיסוי חוקי: נביט על אלמנט באיבר.e לכל,e S בהסתברות e x S מכוסה. נניח (n),t 3 ln.n 2 P r [e is not covered] S:S e infi! 1 x S S:S e exp x S = exp S:S e x S 1 exp ( ) t 1 P r [e is not covered in t iterations] = n k 1 exp 4n 1 exp P r [ e U which is not covered in rruns] union 1 n 4n 1 4 כעת, ננתח את מחיר האלגוריתם: תחילה, אבחנה (יחסית פשוטה) מבחינת התוחלת "אנחנו בסדר". הערה 1.26 לפעמים מסתפקים בלהראות שהתוחלת טובה לעומת האופטימלי. זוהי תוצאה יותר חלשה ממש שנעשה במובן מסויים (אך לא תמיד). 25
זה קל נסמן = 1 S xˆ אם S בכיסוי, 0 אחרת. כמה האלגוריתם משלם באיטרציה אחת אם הוא בוחר את S? כל S נותן x S לתוחלת, ולכן: E [w (S) ˆx S ] = x S w (S) עבור כל הקבוצות אם כך נקבל: [ ] E w (S) ˆx S = w (S) x S = OP T F (I) S S לכן "זוהי סוג התוצאה שרצינו להראות". נזכר באי שיוויון מרקוב עבור 1 c: S S E [ALG (I)] t OP T F (I) P r [X > c E [X]] 1 c 1 אזי ההסתברות ש ( I ) ALG (I) > 4t OP T F 4. 1 כלומר, בהסתברות לכל היותר 4 המחיר גדול. 1 4 שהפתרון לא חוקי. מצד שני, ראינו כי בהסתברות לכל היותר, 1 2 לכן, ההסתברות ששני המקרים מתרחשים חסומה ע"י האיחוד, כלומר לכל היותר ולכן לפחות בהסתברות חצי המחיר קטן והכיסוי חוקי. כאשר חוזרים על הניסוי r פעמים,. ( 1 r 2) ההסתברות לאי הצלחה היא Max SAT 1.3 בעיית אופטימיזציה רוצים לספק כמה שיותר פסוקיות. נתונה נוסחת,CN F כלומר נוסחא מהצורה: f = m j=1 C j פסוקית C j מגודל k j מכילה k j ליטרלים, כלומר מהצורה: 16/4/2012 k j u j C j = i=1 כאשר u i הוא אחד מהמשתנים x 1,..., x n או השלילה שלהם,x 1,..., x n ומשתנה לא מופיע יותר מפעם אחת באותה הפסוקית. יש גרסא ממושקלת ולא ממושקלת רוצים למצוא השמה למשתנים המספקת במקרה הלא ממושקל, כמה שיותר פסוקיות, או במקרה הממושקל, פסוקיות במשקל הגדול ביותר. אנו נדון במקרה הממושקל לכל פסוקית c j נתון משקל w. j נרצה למצוא השמה למשתנים הממקסמת את הביטוי w j c j כאשר: { 1 C j is valid c j = 0 otherwise לבעיה זו יש כמה מקרים פרטיים מאוד חשובים: 26
.k j k,j בה לכל Max K-SAT.k j = k,j בה לכל Max E(XACT) K-SAT נדון תחילה באלגוריתם רנדומיים לבעיה, לאחר מכן נראה שיטה כללית בעזרתה ניתן להגיע לאלגוריתם דטרמיניסטי (תהליך זה נקרא דרנדומיזציה). נשתמש בהגדרה הבאה: הגדרה 1.27 לאלגוריתם פולינומיאלי רנדומי A יש יחס קירוב α אם לכל מופע I: E [A (I)] α OP T (I) 1.3.1 אלגוריתם רנדומי ראשון נתחיל עם אלגוריתם יחסית פשוט: אלגוריתם (Johnson) 6 MAX SAT I נגריל לכל משתנה x i ערך 0/1 בהסתברות. 1 2 [ ] E [A (I)] = E wj c j = w j E [c j ] ( ). 1 2 משפט 1.28 יחס הקירוב של אלגוריתם 6 הוא E [c j ] = 1 P r [c j = 1] + 0 P r [c j = 0] = P r [c j = 1] = 1 P r [c j = 0] ( ) kj 1 P r [c j = 0] = 2 הוכחה: α k 1 ( ) k 1 1 2 2 ( 1 1 = kj.α אזי: 2) kj נסמן על כן, נקבל: ( ) 1 2 wj 1 2 OP T הערה 1.29 בהמשך נראה איך לעשות דרנדומיזציה לתהליך. הערה 1.30 מתוך ההוכחה ניתן לראות כי הבעיה שלנו במציאת היחס היא עם פסוקיות בגודל 1 (אם לא היו כאלה היינו יכולים למצוא יחס קירוב טוב יותר). עם זאת, שיפרו את היחס הזה רק בשנת 95. הרעיון לתת אלגוריתם שיהיה טוב דווקא לפסוקיות הקצרות. המקרה הכי גרוע עבור פסוקית עם ליטרל אחד x, i נקבל עלות. 1 2 27
1.3.2 אלגוריתם רנודמי שני טוב למקרה הכללי, אבל חסום ע"י k, ולכן מאוד טוב עבור בעיית ה K-SAT MAX (בו.(k j k על מנת להגיע לאלגוריתם המשופר, נביע את הבעיה בצורת :ILP כאן בניגוד למה שראינו בעבר, השאלה האם פסוקית מסופקת תלויה בשאלה האם המשתנה x i מופיע בפסוקית בצורה החיובית או השלילית שלו. בשביל להבדיל בין שני המקרים, נגדיר שתי קבוצות: max P j = {i x i C j }, N j = {i x i C j } m w j c j j=1 1 j m : 1 j m c j {0, 1} 1 i n x i {0, 1} כעת, התוכנית ILP המתאימה לבעיה הינה: x i + (1 x i ) i P k i N j cj נהפוך ל LP (נשנה את שמות המשתנים כדי להבדיל בין התוכניות ביתר קלות בעת ההוכחה): max m w j z j j=1 1 j m : 1 j m 0 z j 1 1 i n 0 y i 1 y i + (1 y i ) i P k i N j zj נשים לב שכאן בניגוד לבעיות הקודמות, אי אפשר לוותר על ההגבלה 1 j z שכן כאן מדובר בבעיית מקסימיזציה ולא מינימיזציה. אפשר לוותר על התנאי 1 i y (שכן ההגבלה.(y i משליכה על ה z j 1 האלגוריתם השני משתמש בעיגול רנדומלי: אלגוריתם MAX SAT II - Goeman-Williamson 7 פתור את בעיית ה.LP קבע = 1 i x בהסתברות x i = 0,y i בהסתברות y i.1.1 1 e 0.63 1 2 משפט 1.31 לאלגוריתם 7 יש יחס קירוב של הערה 1.32 בהמשך נראה ששילוב של אלגוריתם שטוב לפסוקיות קצרות (7) ואלגוריתם שטוב לפסוקיות ארוכות (6) אפילו יותר טוב! 28
1 j m E [c j ] β kj z j הוכחה: הוכחת המשפט עוברת דרך טענה: טענה 1.33 ( β l 1 1 1 ) l, β l 1 1 l e כאשר: נשים לב כי: β 1 = 1 β 2 = 3 4.,1 1 e כאשר השאיפה היא כלומר האיכות מתדרדרת עם אורך הפסוקית, והגבול הוא מלמעלה. זה יספיק לנו כי אז, בדומה לאלגוריתם הקודם, נקבל: [ ] E [A (I)] = E wj c j = w j E [c j ] ( w j β kj z j 1 1 ) wj z j e = ( 1 1 e ) OP T F (I) ( 1 1 e ) OP T (I) כנדרש. אם כך נותר רק להוכיח את הטענה: הוכחה: E [c j ] = P r [c j = 1] = 1 P r [c j = 0] P r [c j = 0] = (1 y i ) y i ( ) i P j i N j כאן נשתמש באי שיוויון הממוצעים: בהנתן 0 n a, 1,,... a הממוצע ההנדסי שלהם חסום ע"י הממוצע החשבוני שלהם, כלומר: n a1... a n a 1 +... + a n n 29
בעזרת אי שיוויון הממוצעים, נשים לב כי מספר האיברים בביטוי מעלה הוא k, j ולכן: ( i P ( ) = kj (1 y i ) y kj i j (1 y i ) + ) kj i N j y i k j i P j i N j = P j i P j y i + N j (1 ) k j y i Nj i P j + N j =k j = 1 k j i P j y i + (1 ) y i Nj i k j ( E [c j ] 1 1 z ) kj j? k z βkj j j f (x) = LP condition ( 1 z ) kj j k j? תמיד מתקיים, כי לכל 1 x :l > 0,0 ( ( 1 x ) ( l 1 1 1 ) ) l x l l זהו תרגיל באינפי, נגיד בכמה מילים איך מוכיחים אותו: נביט בגרף שתי הפונקציות משני צידי אי השיוויון. הטענה היא כי הגרף של הצד השמאלי והימני מתלכדים ב 0 וב 1, אבל (x) f תמיד מעל הצד השני, שהוא קו ישר זוהי פונקציה קעורה (וזה קל לבדוק, בעזרת גזירה למשל). 1.3.3 שילוב שני האלגוריתמים הקודמים נרצה לעשות שילוב של שני האלגוריתמים הקודמים, על מנת להגיע לתוצאה יותר טובה. אלגוריתם MAX SAT III 8 נגריל בהסתברות שווה בין האלגוריתמים, ונריץ את האלגוריתם שנבחר.. 3 4 משפט 1.34 לאלגוריתם 8 יחס קירוב הוכחה: שוב בעזרת טענה: טענה 1.35 1 j m E [c j ] 3 4 30
OP T F (I) E [A (I)] = w j E [c j ] 3 { }}{ wj z j 3 OP T (I) 4 4 שכן אם הטענה מתקיימת, אזי: E [c j ] 1 2 α k j + 1 2 β k j z j 1 2 z ( ) j αkj + β kj הוכחה: 1 l 1 2 (α l + β l )? 3 4 : l = 1 1 ( ) 1 2 2 + 1 = 3 4 l = 2 1 ( 3 2 4 + 3 ) = 3 4 4 וכן בהמשך עבור 3 l: 1 2 (α l + β l ) 1 ( ( 7 2 8 + 1 1 )) 3 e 4 נרצה לענות שוב על השאלות הרגילות שלנו. 3 4 (כדי להראות שלאלגוריתם אין קירוב טוב יותר, 1. נרצה למצוא קלט שבאמת מקבל כלומר הניתוח שלנו הוא הכי טוב) דוגמא פשוטה היא הנוסחא f: = x 1 עבור, 1 2 ועבור האלגוריתם השני הוא מקבל קירוב האלגוריתם הראשון הוא מקבל קירוב. 1 2 1, והוא בוחר ביניהם בהסתברות. 3 4 כלומר: 2. השאלה השניה פער השלמות במקרה הזה הוא OP T (I) OP T F (I) בדר"כ במינימיזציה אמרו שזה לפחות משהו, כאן, בבעיית מקסימיזציה, יש להראות כי קיים I כך ש:,x 1 = x 2 = 1 2 OP T (I) OP T F (I) 3 4 f = (x 1 x 2 ) (x 1 x 2 ) (x 1 x 2 ) (x 1 x 2 ) נמצא כזה: כאשר המשקולות כולן 1. אזי = 3 (I),OP T הפתרון השברי נותן ולכן = 4 (I),OP T F ואז מתקבל היחס שטענו. 3. יש אלגוריתם יותר טוב (נזכיר שאנו דנים אך ורק באלגוריתמים פולינומיאלים) עם. 3 4 נראה את הכלי שמאפשר לעשות את זה. יחס קירוב < 31
1.3.4 דרנדומיזציה נרצה להפוך את האלגוריתם 8 לאלגוריתם דטרמיניסטי. מה שנרצה לעשות במקום להגריל בין שני האלגוריתמים, לבחור ביניהם בצורה חכמה. נזכיר שכשדיברנו על בעיות מינימיזציה, היה לנו "טריק נחמד" להפוך את התוצאה של התוחלת להסתברות גבוהה בעזרת א"ש מרקוב עבור > 1 t: P r [X t E [x]] 1 t E [A (I)] α OP T (I) P r [A (I) > t αop T (I)] 1 t.a (I) t α OP T (I),1 1 t אפשר לחזור על זה הרבה פעמים ולקבל ואז בהסתברות תוצאה כרצוננו. בבעיות מקסימיזציה צריך לעשות משהו קצת שונה (כמו בתרגיל 1 שאלה 4) בעוד שבמינימיזציה אפשר תמיד לעשות את התהליך הזה, בבעיות מקסימיזציה יש תנאי. נסתכל על תהליך ההחלטות שאנחנו עושים כתהליך סדרתי, שבו לאט לאט קובעים את ההשמה לחלק מהמשתנים: בשלה הראשון: השמה ל x 1 (נקבע ערך 0 או 1), נסמן ערך זה ב a. 1 בשלב השני: השמה ל x, 2 נסמן ערך זה ב a. 2 וכך הלאה... בשלב ה l : השמה ל x, l נזמן ערך זה ב a. l בכל שלב שכזה קיימת לנו השמה חלקית כלשהיא בשלב ה l, השמה זו היא = ν.(a 1, a 2,..., a l ) נחשב את תוחלת רווח האלגוריתם בהנתן שכבר בחרנו את ההשמה : ν E ν = E [A (I) ν : x 1 = a 1, x 2 = a 2,..., x l = a l ] מתחילים כש ( φ ) ν. = בשלב ה 0 l נגדיר: ונבחר את הטוב מביניהם כלומר: ν 0 = (a 1, a 2,..., a l, 0), ν 1 = (a 1, a 2,..., a l, 1) ν = argmaxe νi i {0,1} האפשרות לעשות את התהליך הזה תלויה ביכולת שלנו לחשב את התוחלת E. ν נראה שאנחנו אכן יכולים לחשב את הערך הזה לשם כך מספיקות ההערכות שכבר עשינו: E [A (I)] α i E [A (I)] β i z i 32
( 1 kj.1 אם 2) ראינו שההסתברות עבור האלגוריתם הראשון שפסוקית מסתפקת היא משתנה x 1 מופיע בפסוקית, או שההשמה שנתנו לו קובעת שהפסוקית לא יכולה להסתפק, kj 1 ( 1 1 להסתפק. 2) או שלא, ואז יש לה סיכוי כך לכל פסוקית (בשלב ה l ) אפשר לחשב: ( ) kj l 1 E [c j ν] = 1 2 = 1 (1 y i ) y i 2 i P j {1,...,n} i N j {1,...,l} נשאל, מדוע האלגוריתם הזה טוב לפחות כמו שני הרנדומיים? האלגוריתם הרנדומי בוחר בהסתברות p 0 את הראשון, וב p 1 את השני. אזי: E ν = p 0 E ν0 + p 1 E ν1 max {E ν0, E ν1 } E (φ) = E [RAND (I)] E ν ν. ν n = (a 1,..., a n ) בסוף מצאנו השמה מסויימת לכל n המשתנים בה אין רנדומיות, כלומר הנוסחא להשמה ν, n וערכה לפחות התוחלת של הרנדומי. E νn הוא פשוט ערך 1.4 בעיות נוספות 1.4.1 הקדמה קצת על הסתברות משפט 1.36 (אי שיוויון מרקוב) נתון משתנה מקרי אי שלילי + R X : Ω בעל תוחלת :t אזי לכל 1.E [X] = µ 23/4/2012 P r [X t µ] 1 t הוכחה: µ = E [X] P r [X tµ] tµ ניסוח נוסף לא"ש מרקוב: P r [X > S] E [X ] S V ar [X] = E [(X E [X]) 2] הגדרה 1.37 σ (X) = V ar [X] 33
משפט 1.38 (אי שיוויון צ'בישב) באותם תנאים של א"ש מרקוב: P r [ X E [X] tσ (X)] 1 t 2 הוכחה: נסמן: X = (X E [X]) 2, t = t 2 V ar [X] = E [X ] נציב בא"ש מרקוב ונקבל: X E[X] tσ(x) {}}{ P r (X E (X)) 2 t 2 V ar [X] 1 t 2 אלו הם שני אי שיוויונות המדברים על ההתפלגות סביב הממוצע. כל זה זו הקדמה לאי שיוויון צ'רנוף (f :(Chernof משפט 1.39 (אי שיוויון צ'רנוף) יהיו X 1,,... X n מ"מ בלתי תלויים מציינים (ערכים ב { 1,0}),,X = n ונסמן [X].µ = E אזי: יהי i=1 X i ( ) µ e δ δ > 0 : P r [X (1 + δ) µ] (1) (1 + δ) 1+δ ( ) µ e δ 0 < δ < 1 : P r [X (1 δ) µ] (2) (1 δ) 1 δ µ = ונסמן,X = n מסקנה 1.40 יהיו X 1,..., X n מ"מ בלתי תלויים מצויינם, יהי i=1 X i [X] E כך ש M. µ אזי: δ > 0 : P r [X (1 + δ) M] ( 0 < δ < 1 : P r [X (1 δ) M] e δ (1 + δ) 1 δ ( e δ (1 + δ ) 1+δ ) M (3) ) M (4) נוכיח את המסקנה: הוכחה:.1 נגדיר את δ קבוע המקיים + δ ) µ = (1 + δ) M.(1 אזי, לפי א"ש צ'רנוף: ( P r [X (1 + δ ) µ] e δ (1 + δ ) 1 δ ) µ 34
.x = M µ אזי: נסמן e δ (1 + δ ) 1+δ = e (1+δ)x 1 ((1 + δ) x) (1+δ)x (, ובכך נסיים את הוכחת מסקנה 1. ) x e δ נטען כי הביטוי מעלה (1+δ ) 1+δ על ידי מניפולציות אלגבריות על אי השיוויון הזה, נקבל כי הוא שווה ערך ל: e x x (1+δ)x e ( e, כאשר אי השיוויון הזה נובע מכך שפונקציה x) x אי שיוויון זה נכון לכל 1 x, כיוון ו e זו מונוטונית יורדת בטווח המבוקש. 2. חלק זה של המסקנה נובע ישירות מא"ש צרנוף, שכן: P r [X (1 δ) M] P r [X (1 δ) µ] ( e δ (1 δ) 1 δ ) ( e δ (1 δ) 1 δ ) M נביא סקיצה של ההוכחה של א"ש צ'רנוף: הוכחה: נביא סקיצה של ההוכחה: ההוכחה של שני החלקים דומה מאוד, לכן נעבור רק על ההוכחה של אחד מהם. נסמן,a = (1 + δ) µ ויהי > 0.t P r [X a] = P r [ Markov,X =e tx, t = eta e tx E[X e ta] ], s=eta E [ e tx] e ta ( ) E [ [ e tx] = E [e t ] n ] n i=1 Xi = E e txi independance n = E [ e txi] µ = i=1 כלומר מספיק להעריך כל מ"מ X i לחוד כדי לחשב את ( ). נעשה זאת כעת: נגדיר 1] = i.p i = P r [X על כן,E [X i ] = P i כן: n E [X i ] = i=1 n i=1 P i E [ e txi] = P i e t + (1 P i ) e 0 ( = 1 + P i e t 1 ) 1+x etx e Pi(et 1) E [ e tx] n = E [ e txi] n e Pi(et 1) n e i=1(e t 1) = e µ(e t 1) i=1 P r [X a] E [ e tx] e ta i=1 i=1 t 1) eµ(e e = t 1 (1+δ)t) 2 t(1+δ)µ eµ(e? ( e δ (1 + δ) 1+δ נרצה למצוא את t שמביא את המינימום. כשעושים את זה (גזירה כדי למצוא את האופטימלי) מקבלים את מה שרצינו. באותה דרך אפשר להוכיח את הסעיף השני. ) µ 35
"משחק קטן" רק כדי לראות איך א"ש צ'רנוף עוזר לנו: במקרה שבהן ההתפלגויות זהות, כמו נגיד במיליון הטלות מטבע, אנו מצפים שבחצי מההטלות יצא עץ. אפשר לשאול מהי ההסתברות שיצא עץ,450 000 פעמים (ולא מחצית = 1 10 δ, אם נציב את המספרים בהרחבה של סעיף 1) נקבל סיכוי מהפעמים). נבחר למשל קטן מאוד להתרחשות הזו: e 1 100 500,000 1 3 e 500 Min Capacity Multi Commodity Flow 1.4.2 נתון גרף E),G = (V, ו k זוגות של קודקודים ב.n = V,i = 1,..., k,s i, t i V רוצים למצוא לכל i מסלול בין s i ל t i (שנעביר בו זרימה), ולהביא למינימום את העומס (=מספר המסלולים העוברים דרך הקשת) המקסימלי על קשת. נעשה פישוט של הבעיה לצורך הדיון הנוכחי: נניח ש P i היא רשימת מסלולים פשוטים בין s i ל t, i ונחשוב עליה כפולינומית. נרצה להפוך את הבעיה ל.LP נעשה זאת בצורה הבאה: לכל מסלול אפשרי p P i (עבור i כלשהוא) נגדיר משתנה 1} {0, p x p = 1 :x אמ"מ מעבירים זרימה במסלול. אזי הבעיה היא: Min W 1 i k : x p = 1 p P i e E : x P W p:p e p P i, 1 i k : x p {0, 1} נהפוך את ה ILP מעלה ל LP ע"י הרלקסציה ש 1 p x 0. נשים לב שלמרות שאנו מניחים את ש P i פולינומית, עדיין אפשר לפתור את הבעיה אם P i אקספוננציאלית, כי מספר האילוצים שלנו (השורה השניה והשלישית) הוא פולינומיאלי, ואז שנהפוך לתוכנית הדואלית נקבל מספר פולינומיאלי של משתנים, ולכן המערכת פתירה. לכן במקרים מהסוג הזה תחת תנאי קל אפשר לפתור את זה. כיצד נפתור את הבעיה שלנו? בעזרת עיגול רנדומי. אלגוריתם 9 עיגול רנדומי ל Flow Min Capacity Multi Commodity נחשב את הפתרון האופטימלי ל LP נסמן פתרון זה ב x. לכל :i i k נגדיל מסלול אחד p מ P i לפי ההתפלגות: p נבחר בהסתברות x. p 36
האלגוריתם מאוד פשוט נטען שהביצועים שלו מאוד טובים, ונוכיח זאת בעזרת א"ש צ'רנוף. x p, p P i אכן משרים התפלגות תקינה. נשים לב כי מכיוון ו 1 = p x משפט 1.41 אם 1,W אז בהסתברות גבוהה 5 העומס המקסימלי W, O (logn) או במילים אחרות יש קירוב (logn) O. W, 12logn אז בהסתברות גבוהה העומס המקסימלי ε משפט 1.42 לכל > 0 ε, אם 2.1 + ε או במילים אחרות יש קירוב,(1 + ε) W אלו בעצם שתי גרסאות של אותו החישוב, הנובע כמעט ישירות מצ'רנוף, כי "התוחלת שלנו היא טובה". נוכיח אם כך את שני המשפטים יחדיו: הוכחה: נגדיר לכל קשת e E משתנה מקרי = Y e מספר המסלולים העוברים דרך e, וכן נגדיר לכל i k 1 וקשת e משתנה = 1 e x i אם המסלול שנבחר בין s i ל t i עובר דרך.e אזי: Y e = k x i e i=1 E [Y e ] = k E [x e i ] i=1 E [x e i ] = p P i:p e x p נשים לב כי: ואז נקבל: E [Y e ] = k E [x e i ] = i=1 k i=1 p P i:p e x p = p:p e x p LP W נרצה להשתמש בצ'רנוף כדי להגיד ש"אנחנו לא יותר מידי רחוקים מהתוחלת הזו" לכל e. :δ = (1 + ε) W כאן e].µ = E [Y נבחר 1 µ (1+δ) {}}{ P r [Y e (1 + ε) W ] = P r Y e (1 + ε) W µ µ ((1 + ε) W ) 2 µ 1 µ W µ (ε W ) 2 µ W µ ε 2 µ P r [Y e (1 + ε) W ] e ε2 W 3 Chernoff ( W µ e [ (1+ε) ) µ = ε 2 W 2 ( W µ ) 1] 2 µ 3. 1 5 ניסוח מקובל במדעי המחשב אם כי מעט מעורפל כאן נתייחס לכך שההסתברות לכישלון היא > c n למעשה כאן ובמקרים הקודמים "אנחנו מקבלים את זה בחינם", כי אם נתון לנו כי ההסתברות קטנה מקבוע מסויים, אפשר כפי שראינו לחזור על הניסוי מספר l פעמים להקטין את ההסתברות לכישלון כרצוננו. כמו כן אפשר לעשות מניפולציה נוספת אפשר לבחור שאם לא הצלחנו לאחר מספר ניסויים מסויים, מריצים אלגוריתם אקפוננציאלי אחר. 37
מכאן נגיע לשני המשפטים ע"י הצבה: עבור המשפט השני, אם נציב את W נקבל: P r [Y e (1 + ε) W ] e ε 2 ( 12logn ) ε 2 3 1 n 4 זה כאמור היה עבור קשת אחת. אזי, מחסם האיחוד (כאשר n 2 הוא מספר הקשתות, כפול ההסתברות שאחת מהן מפרה את התנאי): [ ] P r max Y e (1 + ε) W n 2 1 e E n 4 = 1 n 2 עבור המשפט הראשון, יש להשתמש בפישוט השני של צ'רנוף (במקרה ש δ גדול): [ ( ) ] W P r [Y e 4logn W ] = P r Y e 4logn µ µ Chernoff P r 1 n 4 e 4logn( W µ )µ = e (4lognW ) W 1 [ max e E Y e 4lognW ] n 2 1 n 4 = 1 n 2 Knapsack 1.4.3 נתון שק בגודל,B ו n פריטים } n.s = {a 1,..., a לכל פריט גודל ) (a size ורווח.profit (a i ) רוצים למצוא S S כך ש: size (a i ) B כך ש ( i profit (S ) = a profit (a i S מקסימלי. נניח כי + Z,profit (a i ), size (a i ) ואי אפשר לקחת חלק מפריט (או לוקחים אותו או לא לוקחים אותו כלל). נסמן ) i P. = maxprofit a) נרצה למצוא אלגוריתם שרץ בזמן פולינומי ב n וב P. i אלגוריתם 10 אלגוריתם דינמי ל Knapsack מחשבים לכל ערך p np 1 (שלם), ולכל = A (p, i) 1 i n המשקל המינימלי שנותן רווח כולל P עבור i הפריטים הראשונים. נחשב אותו בצורה הבאה: { A (p, i) A (p, i + 1) = min A (p profit (a i+1 )) + size (a i+1 ) זמן הריצה של האלגוריתם ) P.O ( n 2 38
.n, 1 ε נביא אלגוריתם נזכור כי = F P T AS קיים קירוב + ε 1 בזמן ריצה פולינומי ב F P T AS לבעיה: אלגוריתם 11 אלגוריתם F P T AS ל Knapsack נגדיר.k = εp n.i זה ב instance נסמן 1 i n : profit (a i ) =.P = maxprofit (a i ) = P i k = P εp n profit(ai) k = n ε נסמן פותרים את הבעיה החדשה בעזרת אלגוריתם דינמי נסמנו.ALG.O ( n 2 P ) ( ) n = O 3 ε זמן הריצה של האלגוריתם הנ"ל ALG (I) (1 ε) OP T (I) טענה 1.43 הוכחה: נשים לב: ( ) OP T (I) ALG (I) k ALG (I ) = k OP T (I ) k n = OP T (I) nk ( ) k כי יכול להיות שעל כל אחד מהאיברים אנחנו מפסידים 1 בעיגול. אזי: ( ) = OP T (I) something P P OP T (I) (1 ε) OP T (I) Primal-Dual Algorithms 1.5 ראינו את הרעיון הבסיסי כבר היום נכנס לעומק ונראה דוגמאות נוספות. בהנתן תוכנית לינארית בצורה הקנונית המיוחדת P: min c T x Ax b x 0 max b T y A T y c y 0 התוכנית הדואלית D שלה תהיה: ראינו את עקרון העודף המשלים: 30/4/2012 39
משפט 1.44 יהיו,x y פתרונות אפשריים ל D,P בהתאמה.,x y הם פתרונות אופטימליים אמ"מ מתקיימים שני התנאים הבאים:.1 לכל i n,1 או = 0 i x או 1 j m a ijy j = c i..2 לכל j m,1 או = 0 j y או 1 i n a ijx i = b j. וכן ראינו את עקרון העודף המשלים המורחב: משפט 1.45 יהיו,x y פתרונות ל D,P בהתאמה (בצורה קנונית מיוחדת) המקיימים את התנאים הבאים:. j a ijy j ci.1 לכל i n,1 או ש 0 = i x או α.2 לכל j m,1 או ש 0 = j y או j a ijx i β b j. c T x αβ b T y כאשר 1 β.α, אזי: αβ b T y = αβ OP T F (I) αβ OP T (I) מסקנה 1.46 מדואליות חלשה: Min Multi Cut 1.5.1 תחילה, הגדרות בסיסיות: הגדרה 1.47 בהנתן קבוצה (,S S ) S, V הוא חתך לשתי קבוצות שמתאים ל S את הקבוצה: {(u, v) u S, v / S} בצורה דומה, אפשר להגדיר חתך למספר קבוצות: הגדרה 1.48 תהי C קבוצה של קשתות. C היא חתך ל n קבוצות אם היא מפרידה את הגרף ל n חלקים S 1, S 2,..., S n זרים. כלומר: C = {(u, v) u S i, v S j, i j} 40
כעת, נגדיר את הבעיה: נתון גרף (E G, =,V) וקבוצה של k זוגות: (s 1, t 1 ), (s 2, t 2 ),..., (s k, t k ) כאשר לכל,s i, t i V :i ולכל קשת E e משויך משקל.R + c e המטרה: רוצים למצוא חתך בגרף G כך שכל זוג ) i s) i, t מופרד, בעל משקל מינימלי (כאשר משקל החתך הוא סה"כ משקל הצלעות שהוא מכיל). נשים לב שאין כאן מגבלה על מספר החלקים שאפשר לחלק את הגרף אליהם, וכמו כן אין דרישה ש s i, t i שונים זה מזה. לכן תמיד יש פתרון לבעיה (מקסימום פשוט מפרידים בין כל הזוגות, שכן כאמור אין מגבלה על מספר הקבוצות). כאשר יש לפחות שני זוגות הבעיה הזו היא בעיה NP קשה. אנו נדבר היום רק על בעיה זו בעצים, כלומר כאשר G הוא עץ בעץ כאמור יש מסלול אחד מכל קודקוד לקודקוד אחר, ולכן זהו איזשהוא פישוט של הבעיה. גם במקרה זה הבעיה היא קשה אפשר לראות את זה די בקלות: בעיה זו כוללת בתוכה כמקרה פרטי את בעיית ה Cover.Vertex מדוע? נביט במקרה הפרטי של כוכב (ישנו קודקוד מיוחד באמצע, וממנו מסלול לכל כוכב). *ציור* בציור חדש, לכל קשת בציור הקודם נשים קודקוד חדש שיתאים לקשתות (כאשר נעביר את משקל הקשת להיות משקל הקודקוד המתאים), וכן נשים נשים קשתות בין הקודקודים רק כשיש מסלול בין ) i :(s i, t *ציור *2 אזי נקבל כי הבעיה בציור החדש היא בעיית Vertex Cover השקולה לבעיה המקורית. זה קורה ספציפית בדוגמא הזו, אבל אנו צריכים למקרים כלליים את הניתוח של התוכנית הדואלית על מנת לפתור את הבעיה (אחרת היינו יכולים לפתור את הבעיה בצורה שפתרנו את בעיית ה Cover.(Vertex נגדיר את הבעיה הפרימלית: נתאים משתנה x e שיציין האם הקשת בחתך. אזי, התוכנית הפרימלית P השלמה תהיה: min e E c e x e 1 i k, e P i x e 1 כאשר P i יהיה המסלול היחיד בין s i ל t. i הרלקסציה ל LP תהיה: e E x e {0, 1} e E x e 0 ואכן קיבלנו תוכנית שקולה לזו בבעיית ה C V. 41
התוכנית הדואלית D תהיה: max k i=1 e E : y i i:e P i y i c e 1 u k y i 0 אפשר לחשוב עליה כסוג של בעיית זרימה, כאשר y i הן הזרימות דרך המסלול P i (לא דרך קשת!), והדרישה הראשונה c e היא המכסה הכוללת של הזרימה. במקרה הפרטי של הכוכב, זה יראה כך: *ציור *3 לפי הצגת האולגוריתם, לכל,s i, t i מבין הקודקודים על המסלול s i, t i נגדיר את v i להיות: ) i,(least common ancestor) v i = lca (s i, t הוא בעל העומק המינימלי. אלגוריתם Primal Dual for the Min Multi Cut problem 12 אתחול: = 0 e. i : y i = 0, e E : x מציאת חתך: נבחר באופן שרירותי קודקוד שיהיה השורש של העץ. זה ישרה סדר על העץ, ולכל קודקוד נוכל להגדיר את העומק (ללא קשר למשקל הצלעות): depth (v) = distance from the root נתבונן בקודקודים v 1,,... v k לפי סדר לא עולה של העומק: נגדיל את הזרימה דרך P i (כלומר נגדיל את y) i עד שנגיע לרוויה. כלומר, עבור קשת כלשהיא e P i (יכול להיות יותר בבת אחת), האילוץ הדואלי יהיה הדוק. קובעים את = 1 e x (כלומר (e C לכל E e שהגיעה לרוויה. מה רע באלגוריתם הזה? יש בעיה במסלולים מאוד ארוכים. למשל, אם הגרף הוא מסלול אחד מאוד ארוך, וכל = 1 e c, כל הצלעות יכנסו בבת אחת לחתך. נוסיף שלב נוסף ע"מ לשפר הביצועים: "ניקוי": עוברים על הקשתות בסדר הפוך להכנסתן לחתך C, ומורידים קשת e אם {e} \C עדיין מהווה חתך חוקי (שמפריד את כל הזוגות). משפט 1.49 לאלגוריתם מעלה על עצים יש יחס קירוב 2. הוכחה: תחילה, לכל מסלול בחרנו לפחות קשת אחת לחתך, אחרת היינו ממשיכים בתהליך, לכן הפתרון חוקי. שנית, האילוצים של התוכנית הדואלית D מתקיימים ישירות מהגדרת האלגוריתם (לא ממשיכים להגדיל את הזרימה אם אחת הקשתות הגיעה לרוויה). נותר להראות כי התנאים של עקרון העודף המשלים המרוחב מתקיימים: 42